The present disclosure relates generally to distributed computing systems, and more particularly to methods and systems for improving the efficiency of asynchronous communication between systems.
Individual computing elements of distributed systems often utilize asynchronous communication methods when communicating with each other. Asynchronous communication can provide a number of benefits over synchronous communication. For example, asynchronous systems may perform other tasks after sending a message and before receiving the response. In other words, asynchronous systems do not have to be idle while waiting for a response to a message.
One challenge that arises with use of asynchronous systems is that it is difficult to detect failures. If a response is not received within a certain period of time, it is unknowable as to whether the response is simply delayed due to network traffic or whether there will be no response due to the responding device crashing or otherwise being unavailable. A typical technique for handling this situation is to use timeouts. Timeouts work by assuming that a response will not be received if it is not received during a specified amount of time. While use of timeouts can be helpful, it is desirable to find ways to improve the manner in which asynchronous systems communicate.